#pragma once 

namespace Vortex { namespace Wrapper {

	public ref class Core sealed abstract {

		//defines time which is used to estimate CPU frequency
		static const int MEASURE_TIME_MS = 50;

		static unsigned __int64 CalcCPUFrequency();

		static unsigned __int64 _cpuFrequency = 0;

	public:

		///<summary>Gets number of CPU ticks clocked since CPU is started</summary>
		static unsigned __int64 GetCPUTicks();

		///<summary>Estimated CPU Frequency (in ticks)</summary>
		static property unsigned __int64 CpuFrequency {
			unsigned __int64 get() {
				if (!_cpuFrequency) {
					_cpuFrequency = CalcCPUFrequency();
				}
				return _cpuFrequency;
			}
		}

	};

} }